#pragma once
#include "CDOCollection.h"

class CSetterBaseCollection :
	public CDOCollection
{

protected: 
	CSetterBaseCollection(CCoreServices * pCore);
	virtual ~CSetterBaseCollection();
public: 
	static HRESULT Create(CDependencyObject * * ppObject, CREATEPARAMETERS * pCreate);
	void SetIsSealed();
	virtual HRESULT Append(CDependencyObject * pObject, XUINT32 * pnIndex);
	virtual HRESULT ValidateItem(CDependencyObject * pObject);
	virtual XBOOL ShouldProcessEnterLeave();
	virtual XBOOL ShouldEnsureNameResolution();
	virtual HRESULT Enter(CDependencyObject * pNamescopeOwner, struct EnterParams params);
	virtual HRESULT Leave(CDependencyObject *, struct LeaveParams);
	virtual XBOOL ParticipatesInManagedTreeInternal();
	HRESULT GetSetterIndexByPropertyId(XUINT32 uPropertyId, XBOOL bIsCore, XUINT32 & uIndex, XBOOL & bFound);
	virtual XUINT32 GetTypeIndex() const;
	XBOOL m_bIsSealed;
};
